import API from '../api/wx'

const wx = window.wx

export default {
  debug: process.env.NODE_ENV === 'development',
  // debug: true,
  baseApiList: ['checkJsApi', 'onMenuShareTimeline',
    'onMenuShareAppMessage', 'onMenuShareQQ',
    'onMenuShareWeibo', 'onMenuShareQZone',
    'hideMenuItems', 'showMenuItems',
    'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem',
    'translateVoice', 'startRecord', 'stopRecord',
    'onVoiceRecordEnd', 'playVoice', 'onVoicePlayEnd',
    'pauseVoice', 'stopVoice', 'uploadVoice',
    'downloadVoice', 'chooseImage', 'previewImage',
    'uploadImage', 'downloadImage', 'getNetworkType',
    'openLocation', 'getLocation', 'hideOptionMenu',
    'showOptionMenu', 'closeWindow', 'scanQRCode',
    'chooseWXPay', 'openProductSpecificView', 'addCard',
    'chooseCard', 'openCard', 'updateAppMessageShareData',
    'updateTimelineShareData'],
  wx,
  // 初始化
  init () {
    return new Promise((resolve, reject) => {
      API.getJsConfig({
        url: encodeURIComponent(location.href.split('#')[0])
      })
        .then(res => {
          // wx配置
          wx.config({
            debug: this.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
            appId: res.appId, // 必填，公众号的唯一标识
            timestamp: res.timestamp, // 必填，生成签名的时间戳
            nonceStr: res.nonceStr, // 必填，生成签名的随机串
            signature: res.signature, // 必填，签名
            jsApiList: res.apiList || this.baseApiList // 必填，需要使用的JS接口列表
          })
          wx.appId = res.appId
          wx.ready(() => {
            resolve(wx)
          })
          // 验证失败
          wx.error((err) => {
            reject(err)
          })
        })
        .catch(err => {
          reject(err)
        })
    })
  },
  // 检测是否支持js接口
  checkJsApi (apisName) {
    return new Promise((resolve, reject) => {
      wx.checkJsApi({
        jsApiList: [...apisName],
        success (res) {
          resolve(res)
        },
        fail (err) {
          reject(err)
        }
      })
    })
  },
    initAgentConfig () {
        return new Promise((resolve, reject) => {
            API.getCorpJsConfig({
                url: encodeURIComponent('https://www.bihuo8.com/lb/#/qywx/khgl/page?type=detail'),
                debug: 1
            })
                .then(res => {
                    // wx配置
                    wx.agentConfig({
                        corpid: res.appId, // 必填，企业微信的corpid，必须与当前登录的企业一致
                        agentid: 1000068, // 必填，企业微信的应用id （e.g. 1000247）
                        timestamp: res.timestamp, // 必填，生成签名的时间戳
                        nonceStr: res.nonceStr, // 必填，生成签名的随机串
                        signature: res.signature, // 必填，签名
                        jsApiList: ['selectExternalContact'], // 必填
                        success: function (res) {
                            // 回调
                            wx.corpid = res.corpid
                            debugger
                            // resolve(wx)
                        },
                        fail: function (err) {
                            if (err.errMsg.indexOf('function not exist') > -1) {
                                alert('版本过低请升级')
                            }
                            reject(err)
                        }
                    })
                    wx.ready(() => {
                        debugger
                        resolve(wx)
                    })
                    // 验证失败
                    wx.error((err) => {
                        reject(err)
                    })
                })
                .catch(err => {
                    debugger
                    reject(err)
                })
        })
    },
  pay ({ appId, timeStamp, nonceStr, packageValue, signType, sign }) {
    return new Promise((resolve, reject) => {
      const params = {
        appId: appId,
        timestamp: timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
        timeStamp: timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
        nonceStr: nonceStr, // 支付签名随机串，不长于 32 位
        package: packageValue, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
        signType: signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
        paySign: sign // 支付签名
      }
      // WxUtil.wx.chooseWXPay(params);
      /* eslint-disable no-undef */
      WeixinJSBridge.invoke('getBrandWCPayRequest', params, (res) => {
        if (res.err_msg === 'get_brand_wcpay_request:ok') {
          resolve(res)
        } else {
          reject(res.err_msg)
        }
      })
    })
  }
}
